Oracel RAC 26AI 26.0.0.0 OEL9.7 最佳实践
1 背景知识
本章介绍如何在 Oracle Linux 8.6 上安装 Oracle 26AI RAC 集群。
请根据 VMware Vsphere Oracle 虚拟机环境准备两节点RAC 环境。
2 操作系统准备
Note
以下操作都需要在 rac1 节点和 rac2 节点执行。
2.1 DNS 解析设置
cat >> /etc/hosts << EOF
#public ip
192.168.10.211 rac1
192.168.10.212 rac2
#vip
192.168.10.209 rac1-vip
192.168.10.210 rac2-vip
#private ip
192.168.122.51 rac1-priv
192.168.122.52 rac2-priv
#scanip
192.168.10.208 scan-ip
EOF
2.2 执行操作系统优化
#rac1#root>
#rac2#root>
bash optimize_system_conf_oracle.sh
2.3 创建目录
#rac1#root>
#rac2#root>
mkdir -p /u01/app/grid/product/26.1.0/db_1
mkdir -p /u01/app/oracle/product/26.1.0/db_1
mkdir -p /u01/app/grid
chown -R oracle:dba /u01/app/oracle
chown -R grid:dba /u01/app/grid
chmod -R 775 /u01/app/oracle
chmod -R 775 /u01/app/grid
2.4 安装依赖包
Note
Oracle Linux 操作系统。
dnf install oracle-ai-database-preinstall-26ai -y
dnf install unzip gcc elfutils-libelf-devel gcc-c++ chrony -y
2.5 设置Oracle环境变量
2.5.1 rac1
su - oracle
cat >> ~/.bash_profile << EOF
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/26.1.0/db_1
export ORACLE_SID=citdb1
export ORACLE_UNQNAME=citdb1
export PATH=\$ORACLE_HOME/bin:\$PATH
export LANG=en_US.utf8
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib
export CVUQDISK_GRP=dba
EOF
2.5.2 rac2
su - oracle
cat >> ~/.bash_profile << EOF
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/26.1.0/db_1
export ORACLE_SID=citdb2
export ORACLE_UNQNAME=citdb2
export PATH=\$ORACLE_HOME/bin:\$PATH
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib
export CVUQDISK_GRP=dba
export LANG=en_US.utf8
EOF
2.6 设置GRID 环境变量
2.6.1 rac1
su - grid
cat >> ~/.bash_profile << EOF
export ORACLE_BASE=/u01/app/grid/base
export ORACLE_HOME=/u01/app/grid/product/26.1.0/db_1
export ORACLE_SID=+ASM1
export PATH=\$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:
export CVUQDISK_GRP=dba
export LANG=en_US.utf8
EOF
2.6.2 rac2
su - grid
cat >> ~/.bash_profile << EOF
export ORACLE_BASE=/u01/app/grid/base
export ORACLE_HOME=/u01/app/grid/product/26.1.0/db_1
export ORACLE_SID=+ASM2
export PATH=\$ORACLE_HOME/bin:\$PATH
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:
export CVUQDISK_GRP=dba
export LANG=en_US.utf8
EOF
2.7 ROOT 的环境变量
cat >> ~/.bash_profile << EOF
export PATH=/u01/app/grid/product/26.1.0/db_1/bin:\$PATH
export LANG=C
EOF
3 创建UDEV 共享磁盘设备
3.1 2. 对于 Oracle RAC,更好的方案
cat > /etc/udev/rules.d/99-oracle-asm-disks.rules << 'EOF'
# 使用序号而不是 sdX 名称
SUBSYSTEM=="block", ENV{ID_PATH}=="pci-0000:02:01.0-scsi-0:0:0:0", SYMLINK+="oracleasm/asm-disk01"
SUBSYSTEM=="block", ENV{ID_PATH}=="pci-0000:02:01.0-scsi-0:0:1:0", SYMLINK+="oracleasm/asm-disk02"
SUBSYSTEM=="block", ENV{ID_PATH}=="pci-0000:02:01.0-scsi-0:0:2:0", SYMLINK+="oracleasm/asm-disk03"
SUBSYSTEM=="block", ENV{ID_PATH}=="pci-0000:02:01.0-scsi-0:0:3:0", SYMLINK+="oracleasm/asm-disk04"
SUBSYSTEM=="block", ENV{ID_PATH}=="pci-0000:02:01.0-scsi-0:0:4:0", SYMLINK+="oracleasm/asm-disk05"
SUBSYSTEM=="block", ENV{ID_PATH}=="pci-0000:02:01.0-scsi-0:0:5:0", SYMLINK+="oracleasm/asm-disk06"
SUBSYSTEM=="block", ENV{ID_PATH}=="pci-0000:02:01.0-scsi-0:0:6:0", SYMLINK+="oracleasm/asm-disk07"
SUBSYSTEM=="block", ENV{ID_PATH}=="pci-0000:02:01.0-scsi-0:0:8:0", SYMLINK+="oracleasm/asm-disk08"
SUBSYSTEM=="block", ENV{ID_PATH}=="pci-0000:02:01.0-scsi-0:0:9:0", SYMLINK+="oracleasm/asm-disk09"
SUBSYSTEM=="block", ENV{ID_PATH}=="pci-0000:02:01.0-scsi-0:0:10:0", SYMLINK+="oracleasm/asm-disk10"
SUBSYSTEM=="block", ENV{ID_PATH}=="pci-0000:02:01.0-scsi-0:0:11:0", SYMLINK+="oracleasm/asm-disk11"
SUBSYSTEM=="block", ENV{ID_PATH}=="pci-0000:02:01.0-scsi-0:0:12:0", SYMLINK+="oracleasm/asm-disk12"
# 设置权限(根据您的环境调整用户和组)
SUBSYSTEM=="block", ENV{ID_PATH}=="pci-0000:02:01.0-scsi-0:0:*:0", OWNER="grid", GROUP="asmadmin", MODE="0660"
EOF
3.2 3. 应用规则
# 创建目录
mkdir -p /dev/oracleasm
# 重新加载规则
udevadm control --reload-rules
udevadm trigger --type=devices --subsystem-match=block
# 或者完全重启 udev
systemctl restart systemd-udevd
# 重新扫描所有磁盘
for host in /sys/class/scsi_host/host*; do
echo "- - -" > $host/scan 2>/dev/null || true
done
3.3 4. 验证结果
# 查看固定的符号链接
ls -l /dev/oracleasm/
# 查看所有磁盘的 ID_PATH 映射
for disk in /dev/sd*[a-z]; do
echo -n "$disk -> "
udevadm info $disk | grep "ID_PATH=" | cut -d= -f2
done
3.4 验证最终结果
重启后验证:
# 检查磁盘顺序是否固定
ls -l /dev/sd*
ls -l /dev/disk/by-path/
# 检查所有链接是否一致
for path in /dev/disk/by-path/pci-0000:02:01.0-scsi-*; do
disk=$(readlink -f $path)
echo "$(basename $path) -> $disk"
done
请先尝试使用 SYMLINK 方案,这比直接使用 NAME 更安全可靠。
3.5 调整/dev/shm
- 增大 tmpfs 文件系统大小。
#rac1#root>
#rac2#root>
cat >> /etc/fstab << EOF
tmpfs /dev/shm tmpfs defaults,size=8192M 0 0
EOF
- 重新挂载 tmpfs 文件系统。
#rac1#root>
#rac2#root>
systemctl daemon-reload
mount -o remount /dev/shm
4 NTP 服务
4.1 rac1 节点作为 NTP 服务端
- 编辑
/etc/chrony.conf配置文件。
#rac1#root>
vi /etc/chrony.conf
- 修改第
3行和第28行。
server 192.168.10.211 prefer
allow 192.168.10.0/24
- 重启NTP服务。
#rac1#root>
systemctl restart chronyd
systemctl status chronyd
systemctl enable chronyd
4.2 rac2 节点作为 NTP 客户端
-
编辑
/etc/chrony.conf配置文件。 -
修改第
3行和。
server 192.168.10.216 iburst
- 重启服务
#rac2#root>
systemctl restart chronyd
systemctl enable chronyd
systemctl status chronyd
4.3 验证时间同步
#rac2#root>
chronyc sources
chronyc sourcestats
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^? rac1 0 6 0 - +0ns[ +0ns] +/- 0ns
Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev
==============================================================================
rac1 0 0 0 +0.000 2000.000 +0ns 4000ms
Note
只要确定 Offset 为 0ns 即可。说明两台服务器时间一致。
5 准备安装介质
5.1 创建目录
#rac1#root>
cd /app
mkdir setup
mkdir db
mkdir grid
chown -R grid:dba grid/
chown -R oracle:dba db/
5.2 上传解压软件
上传GI+DB软件到 setup 目录,并解压到本地目录。
LINUX.X64_2326100_grid_home.zip
LINUX.X64_2326100_db_home.zip
#rac1#root>
chown oracle:dba /app/setup
chmod 775 /app/setup
su - oracle
#rac1#oracle>
cd /app/setup
unzip -q LINUX.X64_2326100_db_home.zip -d $ORACLE_HOME
su - grid
#rac1#grid>
cd /app/setup
unzip -q LINUX.X64_2326100_grid_home.zip -d $ORACLE_HOME
Note
到此为止时,请打快照 DB_INSTALL_ENV 。
6 启动GI安装
su - grid
#grid>
cd $ORACLE_HOME
export DISPLAY=192.168.10.131:0.0
./gridSetup.sh
6.1 GI软件安装参数
6.1.1 安装选项

6.1.2 集群选项

6.1.3 集群选项

6.2 添加节点


6.3 设置互信密钥

6.4 配置网卡功能

6.5 创建OCR 磁盘

6.6 设置ASM 密码

6.7 开启自我修复功能

6.8 IPMI 主板信息

6.9 配置EMCC

6.10 配置操作系统组

6.11 指定GRID BASE 路径

6.12 指定Inventory路径

6.13 指定自定义脚本

6.14 系统合规检测

6.15 Sunmary

6.16 安装进程

6.17 安装完成

| 参数 | 值 |
|---|---|
| 安装选项 | Install and configure oracele grid for a cluster |
| 集群配置 | Configure an oracleA_standalone cluster |
| cluster name | ASM |
| scan name | scan-ip |
| csan port | 1521 |
| 新加节点 | rac2,rac2-vip,密码grid ,并点击 setup . |
| 不勾选 | reuseprivate and publuic keys . |
| 是否使用ASM磁盘 | Use Oracle flex asm for storage |
| 是否使用GIMR | Use a local GIMR database |
| 是否创建ASM GIMR 磁盘组 | 是 |
| ASM 磁盘组 | OCR |
| AU size | 4MB |
| Redundancy | External |
| ASM 磁盘组 | RECO |
| AU size | 4MB |
| Redundancy | External |
| SYS\ASMSNMP 密码 | grid |
| IPMI | DO not use |
| EM | 不注册到EMCC |
| OSASM | asmdba |
| OSDBA | asmdba |
| OSOPER | asmdba |
| Oracle Base | /u01/app/grid/base |
| 安装目录 | /u01/app/grid/product/21.3.0/db_1 |
| Inventory | /u01/app/grid/oraInventory |
Warning
- 磁盘路径为:>
/dev/oracleasm - 注意
·Inventory目录要正确,否则无法打补丁。
7 创建ASM 磁盘组
启动 asmca 创建 ASM 磁盘组
su - grid
#rac1#grid>
export DISPLAY=192.168.10.131:0.0
asmca
| 选项 | 参数 | 磁盘 |
|---|---|---|
| 磁盘组名称 | DATA | asm-disk(05-08) |
| 磁盘组名称 | FRA | asm-disk(09-12) |
| 磁盘组冗余 | External |
8 启动DB安装
su - oracle
#rac1#oracle>
cd $ORACLE_HOME
export DISPLAY=192.168.10.131:0.0
./runInstaller
8.1 DB 软件安装参数
| 参数 | 值 |
|---|---|
| install options | install database software only |
| 安装类型 | Oracle real application clustersdatabase |
| OS Password | oracle |
| 不勾选 | Reuse private and public keys existing in the user home |
| language | 添加simplified chinese |
| 数据库版本 | 企业版 |
| oracle base | /u01/app/oracle |
| 软件安装目录 | /u01/app/oracle/product/21.3.0/db_1 |
| OSDBA | dba |
| OSOPER | dba |
| OSBACKUPDBA | dba |
| OSDGDBA | dba |
| OSKMDBA | dba |
| OSRACDBA | dba |
8.2 Oracle数据库安装参数
su - oracle
#oracle>
export DISPLAY=192.168.10.131:0.0
dbca
| 选项 | 参数 |
|---|---|
| 数据库类型 | 选择GTP |
| Global Database Name | citdb |
| PDB | pdb1 |
| EM | 不勾选 |
| 自动维护工具 | 开启 |
| system 和sys 密码 | oracle |
| 数据文件存储 | ASM |
| SFRA (快速恢复区) | 4182 (默认) |
| sample schemas | 勾选 |
| SGA and PGA | 选择TYpical 并指定 70%。 |
| Process | 150 |
| 字符集 | AL16UTF16 |
| Connection mode | 独占模式 |
| Oracle-Manage | +DATA |
| 快速恢复区 | +FRA |
8.3 导入测试数据
导入 [[000-inbox/Oracle/inito.sql]] 脚本,生成 oa 模式。
8.4 密码过期处理
8.4.1 查看用户 Profile
#oracle>
sqlplus / as sysdba
SELECT username,PROFILE FROM dba_users WHERE username IN ('SYSTEM','OA');
8.4.2 更改 profile 策略
设置 profile 策略
#sys>
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
更多内容请参考 Oracle 密码过期策略
9 FAQ
9.1 互信问题
Warning
报错信息:passwordless ssh connectivity is not setup from the local node node1 to the following nodes node2
解决方案
1)Rename the original scp.
mv /usr/bin/scp /usr/bin/scp.orig
2)Create a new file .
vi /usr/bin/scp
3)Add the below line to the new created file .
/usr/bin/scp.orig -T $*
4)Change the file permission.
chmod 555 /usr/bin/scp
After installation:
mv /usr/bin/scp.orig /usr/bin/scp
9.2 删除磁盘组
count=1;
for i in {b..m};
do oracleasm deletedisk FRA$count;
let count+=1;
done
count=1;
for i in {b..m};
do oracleasm deletedisk DATA$count;
let count+=1;
done
count=1;
for i in {b..m};
do oracleasm deletedisk OCR$count;
let count+=1;
done
count=1;
for i in {b..m};
do oracleasm deletedisk MGT$count;
let count+=1;
done
9.3 删除磁盘分区
for i in asm-disk{01..12};
do fdisk /dev/oracleasm/$i << eof
d
w
eof
done